package cn.kgm.controller;

import com.alibaba.fastjson.JSONObject;
import com.rabbitmq.client.*;
import lombok.extern.slf4j.Slf4j;

import java.io.IOException;

@Slf4j
public class HelloWorldRoutingConsumer2Controller {
    public static void main(String[] args) throws Exception {
        log.info("rabitmq-geting..." );
        // 1.创建链接工厂
        ConnectionFactory factory = new ConnectionFactory();
        // 2.设置参数
        factory.setHost("localhost" );
        factory.setPort(5672);
        factory.setUsername("kagim" );
        factory.setPassword("kagim" );
        factory.setVirtualHost("/virtual-kagim" );
        // 3.创建链接
        Connection connection = factory.newConnection();
        // 4.创建通道（chanal）
        Channel channel = connection.createChannel();
        // 5.创建queue

//        String queue,  队列名称
//        boolean durable, 是否持久化
//        boolean exclusive,   是否独占
//        boolean autoDelete,  自动删除
//        Map<String, Object> arguments  参数
        String queue2 = "test_dircet_queue2"; // 单 error
        //String queue, 队列
        // boolean autoAck, 自动确认
        // Consumer callback 回调函数
        Consumer consumer = new DefaultConsumer(channel) {
            // 回调方法，收到消息后自动执行下面的方法

            /**
             * consumerTag 消费者标识
             * envelope 参数信息，路由key，交换机等
             * properties 配置信息
             * body 消息内容
             */
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                log.info("body==>" + JSONObject.toJSONString(new String(body)));
                log.info("ERROR，info，waring数据..." );
            }
        };
        channel.basicConsume(queue2, true, consumer);
    }
}
